<?php
declare (strict_types = 1);

namespace app\controller;

use think\Request;


class StudentController
{

    protected $studentModel;
    public function __construct()
    {
        $this->studentModel = new \app\model\Students();
    }
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $res = $this->studentModel::select();
        return json([
            'code' => 200,
            'message' => 'sussess',
            'data' => $res
        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // 格式化时间为 y-m-d-h-m-s
        $formattedTime = date('ymd', time());

        // 输出格式化的时间
        $id = "20".$formattedTime.mt_rand(0,max: 9999);; // 输出类似于 2024-12-24-10-44-09 这样的字符串
        // // 增加
        $name = $request->param('name');
        $class = $request->param('class');
        $age = $request->param('age');
        $gender = $request->param('gender');
        $phone = $request->param('phone');
        $data = [

            'id' => $id,
            'name' => $name,
            'class' => $class,
            'age' => $age,
            'gender' => $gender,
            'phone' => $phone

        ];
        $res = $this->studentModel->save($data);
        if ($res) {
            // 如果save方法返回的是影响的行数，并且您想要返回新插入的记录的详细信息，
            // 可以使用 $this->studentModel->getLastInsID() 获取新插入记录的ID，
            // 然后根据ID查询并返回该记录的详细信息。
            $insertedData = $this->studentModel->where('id', $id)->find();
            return json([
                'code' => 200,
                'message' => 'success',
                'data' => $insertedData // 返回新插入的记录的详细信息
            ]);
        } else {
            return json([
                'code' => 400,
                'message' => 'failed',
                'data' => $res
            ]);
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id): void
    {

    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        // 将ID转换为字符串，以确保查询时类型匹配
        $id = (string)$id;
    
        // 查询出该学生的信息
        $student = $this->studentModel->where('id', $id)->find();
        if (!$student) {
            return json([
                'code' => 400,
                'message' => '学生不存在',
                'data' => null
            ]);
        }
    
        // 拿到传递过来的学生信息
        $name = $request->param('name');
        $class = $request->param('class');
        $age = $request->param('age');
        $gender = $request->param('gender');
        $phone = $request->param('phone');
    
        // 组装要修改的学生信息
        $data = [
            'name' => $name,
            'class' => $class,
            'age' => $age,
            'gender' => $gender,
            'phone' => $phone
        ];
    
        // 修改学生信息
        $res = $this->studentModel->where('id', $id)->update($data);
        if ($res) {
            // 如果需要返回更新后的学生信息，可以重新查询
          $this->studentModel->where('id', $id)->find();
            return json([
                'code' => 200,
                'message' => '更新成功',
                'data' => null
            ]);
        } else {
            return json([
                'code' => 500,
                'message' => 'failed',
                'data' => null
            ]);
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
        public function delete($id)
        {
            // 将ID转换为字符串，以确保查询时类型匹配
            $id = (string)$id;
            // 查询出该学生的信息
            $student = $this->studentModel->where('id', $id)->delete();

            if ($student) {
                return json([
                    'code' => 200,
                    'message' => '删除成功',
                    'data' => null
                    ]);
            } else {
                return json([
                    'code' => 400,
                    'message' => '学生不存在',
                    'data' => null
                ]);
            }
        }
}
